package flca.osm.util;

import java.util.List;

import flca.osm.perst.model.PNode;
import flca.osm.perst.model.PWay;
import flca.voicenav.model.LatLng;
import flca.voicenav.model.TrkPt;

public interface MapUtils {

	public void setDefaultRange(int aRange);
	
	/**
	 * return node given id
	 * @param aNodeId
	 * @return
	 */
	PNode getNode(int aNodeId);
	
	public PWay getWay(int aWayId);
	
	/**
	 * get all ways that are intersected with given node
	 * @param aNodeId
	 * @param aWaysNearBy
	 * @return
	 */
	List<PWay> getConnectedWays(PNode aNode); 
	
	/**
	 * This return a list of TrpPt that can be added to an existing list.
	 * When are at corner with connected ways, we first find the best coord. With the next coord, we then find
	 * what the next way will be. This may be the same way.
	 * @param aCornerRefNode. This is the from where we have to start
	 * @param aCoords
	 * @param aLastCoordIndex. This is passed, so that we can start looking for the best point starting from this one.
	 * @return
	 */
	public List<TrkPt> testGetNextWay(int aCornerRefNode, List<LatLng> aCoords, int aLastCoordIndex);
	
	/**
	 * @param aCoords
	 * @return
	 */
	public List<TrkPt> navigate(List<LatLng> aCoords);

}
